package com.ytclub.practice.server.service;

import com.ytclub.practice.api.req.*;
import com.ytclub.practice.api.vo.RankVO;
import com.ytclub.practice.api.vo.ReportVO;
import com.ytclub.practice.api.vo.ScoreDetailVO;
import com.ytclub.practice.api.vo.SubjectDetailVO;

import java.util.List;

/**
 * 练习明细服务层接口类
 *
 * @author: HuangQi
 * @date: Created in 18:15 2024/4/27
 * @description: 练习明细服务层接口
 */
public interface PracticeDetailService {

    /**
     * 练习提交题目
     *
     * @param req 提交题目请求参数
     * @return 提交结果
     */
    Boolean submitSubject(SubmitSubjectDetailReq req);

    /**
     * 提交练题情况
     *
     * @param req 提交练题情况信息
     * @return 提交结果
     */
    Boolean submit(SubmitPracticeDetailReq req);

    /**
     * 每题得分详情
     *
     * @param req 获取得分详情请求参数
     * @return 得分详情
     */
    List<ScoreDetailVO> getScoreDetail(GetScoreDetailReq req);

    /**
     * 获得答案详情
     *
     * @param req 获取答案详情请求参数
     * @return 答案详情
     */
    SubjectDetailVO getSubjectDetail(GetSubjectDetailReq req);

    /**
     * 答案解析-评估报告
     *
     * @param req 获取评估报告请求参数
     * @return 评估报告
     */
    ReportVO getReport(GetReportReq req);

    /**
     * 获取练习榜
     *
     * @return 练习榜
     */
    List<RankVO> getPracticeRankList();

    /**
     * 放弃练习
     *
     * @param practiceId 练习id
     * @return 放弃结果
     */
    Boolean giveUp(Long practiceId);
}
